# https://fishc.com.cn/thread-203569-1-1.html

# s.update(*others)	使用 others 容器中的元素来更新集合
# s.intersection_update(*others)	更新 s 集合，其内容是 s 集合与 others 容器的交集（见上方注 4）
# s.difference_update(*others)	更新 s 集合，其内容是 s 集合与 others 容器的差集（见上方注 5）
# s.symmetric_difference_update(other)	更新 s 集合，其内容是排除掉 s 集合和 other 容器中共有的元素后，剩余的所有元素
# s.add(elem)	将 elem 元素添加到 s 集合中
# s.remove(elem)	将 elem 元素从 s 集合中移除（如果不存在该元素，则抛出 KeyError 异常）
# s.discard(elem)	将 elem 元素添加到 s 集合中移除（如果不存在该元素，也没有关系）
# s.pop()	从 s 集合中移除并返回任意一个元素（如果集合为空，则抛出 KeyError 异常）
# s.clear()	删除 s 集合中的所有元素

# set: 可变几何
# frozenset:不可变集合
t = frozenset("FishC")

# 可变集合
s = set("FishC")
s.update([1, 1], "23")
print(s)  # {'s', 1, 'C', 'h', '3', '2', 'i', 'F'}

# t.update([1, 1], "23")  # AttributeError: 'frozenset' object has no attribute 'update'

s.intersection_update("FishC")
print(s)  # {'i', 's', 'F', 'C', 'h'}

s = set("FishC")
s.difference_update("FishC")
print(s)  # set()

s = set("FishC")
s.difference_update("Php", "Python")
print(s)  # {'C', 'i', 'F', 's'}

s = set("FishC")
s.symmetric_difference_update("Python")
print(s)  # {'s', 'P', 'F', 'o', 't', 'i', 'n', 'y', 'C'}

s.add(45)
print(s)  # {'F', 'C', 'o', 45, 'i', 'y', 'P', 'n', 's', 't'}

# 使用 remove 删除一个不存在的元素的时候会报错
# s.remove("洼卖")  # KeyError: '洼卖'

# 使用 discard 删除一个不存在的元素的时候会静默处理
s.discard("洼卖")  # KeyError: '洼卖'

# 随机从集合中弹出一个元素
print(s.pop())  # C
print(s)  # {'s', 'F', 'o', 't', 'n', 'i', 45, 'P', 'y'}
s.clear()
print(s)  # set()

